import threading
import queue

# 生产者函数
def producer(q):
    for i in range(5):
        print(f"生产者放入数据: {i}")
        q.put(i)

# 消费者函数
def consumer(q):
    while True:
        item = q.get()
        if item is None:
            break
        print(f"消费者取出数据: {item}")
        q.task_done()

if __name__ == "__main__":
    # 创建一个队列
    q = queue.Queue()

    # 创建生产者和消费者线程
    t1 = threading.Thread(target=producer, args=(q,))
    t2 = threading.Thread(target=consumer, args=(q,))

    # 启动线程
    t1.start()
    t2.start()

    # 等待生产者线程完成
    t1.join()

    # 向队列中放入一个 None 作为结束信号
    q.put(None)

    # 等待消费者线程完成
    t2.join()

    print("所有任务完成")

